package main

//给你一个二进制字符串 s ，现需要将其转化为一个 交替字符串 。请你计算并返回转化所需的 最小 字符交换次数，如果无法完成转化，返回 -1 。
//交替字符串 是指：相邻字符之间不存在相等情况的字符串。例如，字符串 "010" 和 "1010" 属于交替字符串，但 "0100" 不是。
//任意两个字符都可以进行交换，不必相邻 。
func minSwaps(s string) int {
	if isSwap(s) {
		return 1
	}
	tempMap := make(map[byte]int)
	for i := 0; i < len(s); i++ {
		tempMap[s[i]]++
	}
	if sub := tempMap['1'] - tempMap['0']; sub < -1 && sub > 1 {
		return -1
	}
	//2个1连着则换一次

	return 0
}

func isSwap(s string) bool {
	sByte := []byte(s)
	if len(sByte) == 0 {
		return true
	}
	for i := 1; i < len(sByte); i++ {
		if sByte[i] == sByte[i-1] {
			return false
		}
	}
	return true
}
